package com.wjm.until;

import com.alibaba.druid.pool.DruidDataSourceFactory;


import javax.sql.DataSource;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

/**
 * Data:2022年09月11日
 * Author:wjm
 * Content: Druid连接池
 *
 *    2. 创建数据库连接池对象：
 *
 *      DruidDataSourceFactroy.createDataSource(Properties p);//durid创建连接池对象
 *
 *    注意：
 *      1）和 DBCP 连接池只有获取连接池对象的方式不一样，其余的都一样
 *      2）properties配置文件中的key不能乱写，应该与Druid源码中一致
 *
 *
 */
public class DruidUtil {
    //连接池对象
    public static DataSource dataSource;

    /**
     * 通过Druid创建连接池对象
     */
    static {
        try {
            //获取输入流
            InputStream in = JdbcUtil.class.getClassLoader().getResourceAsStream("DruidUtil.properties");

            Properties properties = new Properties();
            //通过io流将读取的数据加载到Properties对象中
            properties.load(in);

            //创建连接池对象
            dataSource = DruidDataSourceFactory.createDataSource(properties);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    /**
     * 从连接池获取连接的方法
     * @return 返回连接对象
     */
    public static Connection getConnection(){
        Connection connection = null;
        try {
            connection = dataSource.getConnection();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return connection;
    }


    /**
     * 将连接对象归还给连接池
     * @param connection
     */
    public static void close(Connection connection){
        try {
            connection.close();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }



}
